package com.min.common.entity;

import lombok.Data;
import lombok.experimental.Accessors;
import org.apache.shiro.authc.AuthenticationToken;

import java.util.Set;

/**
 * 登录主体
 * <p>
 *     用户属性，包括id，登录名，姓名，角色，权限等等
 * </p>
 * @author: fengt
 * @date: 2021/4/9 17:30
 **/
@Data
@Accessors(chain = true)
public class MinSubject implements AuthenticationToken {

    /**
     * 用户ID
     **/
    private Long id;

    /**
     * token
     **/
    private String token;

    /**
     * 用户名
     **/
    private String username;

    /**
     * 账户名
     **/
    private String account;

    /**
     * 密码(数据库密文)
     **/
    private String password;

    /**
     * 盐值
     **/
    private String salt;

    /**
     * 验证码
     **/
    private String captcha;

    /**
     * 验证码ID
     **/
    private String captchaId;

    /**
     * 角色
     **/
    private Set<String> roles;

    /**
     * 权限
     **/
    private Set<String> permissions;

    /**
     * 登录主体身份，必须是主体的唯一标识，比如用户名、手机号、邮箱等等
     * @return: java.lang.Object
     * @author: fengt
     * @date: 2021/6/24 13:22
     **/
    @Override
    public Object getPrincipal() {
        return token;
    }

    /**
     * 安全凭证，只有主体知道的安全值，比如密码
     * @return: java.lang.Object
     * @author: fengt
     * @date: 2021/6/24 13:24
     **/
    @Override
    public Object getCredentials() {
        return password;
    }

}
